const maxLength = function (len = 0) {
  return function (rule, value, callback) {
    if (!value) {
      callback();
      return
    }
    if (typeof value == 'number') {
      value = value.toString();
    }
    if (value.length > len) {
      callback(new Error(`长度不能超过${len}个字符`));
    } else {
      callback();
    }
  }
}

export default {
  // 姓名
  name: [{ max: 20, message: '长度不能超过20个字符', trigger: 'blur' }],
  // 年龄
  age: [{
    message: '请输入正确的年龄', trigger: 'blur', validator(rule, value, callback) {
      if (!/^[+]{0,1}(\d+)$/.test(value)) {
        callback(new Error('请输入正确的年龄'));
      } else {
        callback();
      }
    }
  }],
  // 地址
  address: [{ max: 100, message: '长度不能超过100个字符', trigger: 'blur' }],
  // 密码
  password: [{trigger: 'blur', validator (rule, value, callback) {
    if (value.length < 6 || value.length > 16) {
      callback(new Error('密码请输入6-16个字符， 含英文大小写、数字和特殊字符！'));
    } else if (/\s/.test(value)) {
      callback(new Error('密码不能包含空格'));
    } else {
      callback();
    }
  }
  }],
  tel: [{
    trigger: 'blur', validator: maxLength(30)
  }],
  // 手机
  phone: [{
    message: '请输入正确的手机号码', trigger: 'blur', validator(rule, value, callback) {
      if (!/^1[3456789]\d{9}$/.test(value)) {
        callback(new Error('请输入正确的手机号码'));
      } else {
        callback();
      }
    }
  }],
  // 邮箱
  email: [{
    message: '请输入正确的邮箱', trigger: 'blur', validator(rule, value, callback) {
      if (!/^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$/.test(value)) {
        callback(new Error('请输入正确的邮箱'));
      } else {
        callback();
      }
    }
  }],
  // 身份证号码
  IDNo: [{
    message: '请输入正确的身份证号码', trigger: 'blur', validator(rule, value, callback) {
      if (!/^(\d{18,18}|\d{15,15}|\d{17,17}(X|x))$/.test(value)) {
        callback(new Error('请输入正确的身份证号码'));
      } else {
        callback();
      }
    }
  }],
}